use RepoCommitState;
use RepoFile;
#[cfg(any(feature = "v2018_6", feature = "dox"))]
+use RepoFinder;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
use RepoFinderResult;
use RepoMode;
use RepoPruneFlags;
use RepoResolveRevExtFlags;
use RepoTransactionStats;
use StaticDeltaGenerateOpt;
+#[cfg(feature = "futures")]
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+use futures::future;
use gio;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+use gio_sys;
use glib;
use glib::GString;
use glib::StaticType;
// unsafe { TODO: call ostree_sys:ostree_repo_export_tree_to_archive() }
//}
+ #[cfg(any(feature = "v2018_6", feature = "dox"))]
+ pub fn find_remotes_async<P: IsA<AsyncProgress>, Q: IsA<gio::Cancellable>, R: FnOnce(Result<Vec<RepoFinderResult>, Error>) + Send + 'static>(&self, refs: &[&CollectionRef], options: Option<&glib::Variant>, finders: &[RepoFinder], progress: Option<&P>, cancellable: Option<&Q>, callback: R) {
+ let user_data: Box<R> = Box::new(callback);
+ unsafe extern "C" fn find_remotes_async_trampoline<R: FnOnce(Result<Vec<RepoFinderResult>, Error>) + Send + 'static>(_source_object: *mut gobject_sys::GObject, res: *mut gio_sys::GAsyncResult, user_data: glib_sys::gpointer) {
+ let mut error = ptr::null_mut();
+ let ret = ostree_sys::ostree_repo_find_remotes_finish(_source_object as *mut _, res, &mut error);
+ let result = if error.is_null() { Ok(FromGlibPtrContainer::from_glib_full(ret)) } else { Err(from_glib_full(error)) };
+ let callback: Box<R> = Box::from_raw(user_data as *mut _);
+ callback(result);
+ }
+ let callback = find_remotes_async_trampoline::<R>;
+ unsafe {
+ ostree_sys::ostree_repo_find_remotes_async(self.to_glib_none().0, refs.to_glib_none().0, options.to_glib_none().0, finders.to_glib_none().0, progress.map(|p| p.as_ref()).to_glib_none().0, cancellable.map(|p| p.as_ref()).to_glib_none().0, Some(callback), Box::into_raw(user_data) as *mut _);
+ }
+ }
+
+ #[cfg(feature = "futures")]
+ #[cfg(any(feature = "v2018_6", feature = "dox"))]
+ pub fn find_remotes_async_future<P: IsA<AsyncProgress> + Clone + 'static>(&self, refs: &[&CollectionRef], options: Option<&glib::Variant>, finders: &[RepoFinder], progress: Option<&P>) -> Box_<dyn future::Future<Output = Result<Vec<RepoFinderResult>, Error>> + std::marker::Unpin> {
+ use gio::GioFuture;
+ use fragile::Fragile;
+
+ let refs = refs.clone();
+ let options = options.map(ToOwned::to_owned);
+ let finders = finders.clone();
+ let progress = progress.map(ToOwned::to_owned);
+ GioFuture::new(self, move |obj, send| {
+ let cancellable = gio::Cancellable::new();
+ let send = Fragile::new(send);
+ obj.find_remotes_async(
+ &refs,
+ options.as_ref().map(::std::borrow::Borrow::borrow),
+ &finders,
+ progress.as_ref().map(::std::borrow::Borrow::borrow),
+ Some(&cancellable),
+ move |res| {
+ let _ = send.into_inner().send(res);
+ },
+ );
+
+ cancellable
+ })
+ }
+
#[cfg(any(feature = "v2017_15", feature = "dox"))]
pub fn fsck_object<P: IsA<gio::Cancellable>>(&self, objtype: ObjectType, sha256: &str, cancellable: Option<&P>) -> Result<(), Error> {
unsafe {
}
}
+ #[cfg(any(feature = "v2018_6", feature = "dox"))]
+ pub fn pull_from_remotes_async<P: IsA<AsyncProgress>, Q: IsA<gio::Cancellable>, R: FnOnce(Result<(), Error>) + Send + 'static>(&self, results: &[&RepoFinderResult], options: Option<&glib::Variant>, progress: Option<&P>, cancellable: Option<&Q>, callback: R) {
+ let user_data: Box<R> = Box::new(callback);
+ unsafe extern "C" fn pull_from_remotes_async_trampoline<R: FnOnce(Result<(), Error>) + Send + 'static>(_source_object: *mut gobject_sys::GObject, res: *mut gio_sys::GAsyncResult, user_data: glib_sys::gpointer) {
+ let mut error = ptr::null_mut();
+ let _ = ostree_sys::ostree_repo_pull_from_remotes_finish(_source_object as *mut _, res, &mut error);
+ let result = if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) };
+ let callback: Box<R> = Box::from_raw(user_data as *mut _);
+ callback(result);
+ }
+ let callback = pull_from_remotes_async_trampoline::<R>;
+ unsafe {
+ ostree_sys::ostree_repo_pull_from_remotes_async(self.to_glib_none().0, results.to_glib_none().0, options.to_glib_none().0, progress.map(|p| p.as_ref()).to_glib_none().0, cancellable.map(|p| p.as_ref()).to_glib_none().0, Some(callback), Box::into_raw(user_data) as *mut _);
+ }
+ }
+
+ #[cfg(feature = "futures")]
+ #[cfg(any(feature = "v2018_6", feature = "dox"))]
+ pub fn pull_from_remotes_async_future<P: IsA<AsyncProgress> + Clone + 'static>(&self, results: &[&RepoFinderResult], options: Option<&glib::Variant>, progress: Option<&P>) -> Box_<dyn future::Future<Output = Result<(), Error>> + std::marker::Unpin> {
+ use gio::GioFuture;
+ use fragile::Fragile;
+
+ let results = results.clone();
+ let options = options.map(ToOwned::to_owned);
+ let progress = progress.map(ToOwned::to_owned);
+ GioFuture::new(self, move |obj, send| {
+ let cancellable = gio::Cancellable::new();
+ let send = Fragile::new(send);
+ obj.pull_from_remotes_async(
+ &results,
+ options.as_ref().map(::std::borrow::Borrow::borrow),
+ progress.as_ref().map(::std::borrow::Borrow::borrow),
+ Some(&cancellable),
+ move |res| {
+ let _ = send.into_inner().send(res);
+ },
+ );
+
+ cancellable
+ })
+ }
+
pub fn pull_one_dir<P: IsA<AsyncProgress>, Q: IsA<gio::Cancellable>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: Option<&P>, cancellable: Option<&Q>) -> Result<(), Error> {
unsafe {
let mut error = ptr::null_mut();